package storm;

import java.util.ArrayList;

import programme.GUI.GUIProgramme;
import report.report;
import storm.Schedulers.Scheduler;

public interface ISimulationKernel {

	/**
	 * set duration
	 */
	public abstract void setDuration(int a);

	/**
	 * get current time
	 */
	public abstract int getTime();

	/**
	 * add message
	 */
	public abstract void addEntity(Entity A);

	/**
	 * 
	 * ADD timer
	 * see <a href="{@docRoot}/Documentation/timer.html"> for more information</a>
	 */
	public abstract void addTimer(Timer timer);

	/**
	 * 
	 * Start simulation
	 */
	public abstract void start(GUIProgramme myInterface);

	/**
	 * Treat each message
	 */
	public abstract void solveMessage();

	/**
	 * start simulation with graphique
	 * @param myInterface
	 */
	public abstract void Launch(GUIProgramme myInterface);

	/**
	 * add new message in list 
	 * @param m
	 */
	public abstract void addMessage(KernelMessage m);

	/**
	 * 
	 * @return
	 */
	public abstract int getDuration();

	/**
	 * 
	 */
	public abstract String getName();

	/**
	 * 
	 * @return
	 */
	public abstract String getCtx();

	/**
	 * 
	 * @param tasksListeManager
	 */
	public abstract void setTasksListeManager(
			ITaskListManager tasksListeManager);

	/**
	 * 
	 * @return
	 */
	public abstract ITaskListManager getTasksListeManager();

	/**
	 * 
	 * @return
	 */
	public abstract Scheduler getScheduler();

	/**
	 * 
	 * @return
	 */
	public abstract ArrayList getData();

	/**
	 * 
	 * @param stepTime2
	 */
	public abstract void setPrecision(double stepTime2);

	/**
	 * 
	 * @param report
	 */
	public abstract void setReport(report report);

	/**
	 * 
	 * @return
	 */
	public abstract report getReport();

	/**
	 * 
	 */
	public abstract void stop();

	/**
	 * 
	 * @return
	 */
	public abstract boolean getAllTrace();

	public abstract void setAllTrace(boolean allTrace2);

	/**
	 * Show error in console if available
	 * @param string
	 */
	public abstract void showerror(String string);

	public abstract void freeAll();

	/**** 
	 * Version 4 de la simulation avec seule generation des fichiers de traces TEXTE  ....... 
	 *  avec pass ? pas 
	 */

	public abstract String startSimu(stormIO.SimulatorLoader xmlFile,
			String simulationName);

	//public abstract ArrayList getTaskTable();

	public abstract  log.setTrace getLogs();

	public abstract double getprecision();

	public abstract ArrayList getlisteEntities();

	public abstract ArrayList getProcessorTable();

	public abstract Entity getEntitie(int source);

}